1. Field of the Invention
The described embodiments relate to data processing systems. More specifically, the described embodiments relate to techniques for compressing and decompressing data.
2. Related Art
Many modern electronic devices can operate on large amounts of data (i.e., data files or data streams from a network). For example, these electronic devices can operate on multimedia files such as digital video files, document files such as scanned text documents, simulation files, and other types of files. Because large files can consume significant amounts of memory, and transferring large files across a network can consume considerable amounts of network bandwidth, compression techniques have been developed to reduce the size of the data files. Some compression techniques involve compressing the data using “lossless” compression techniques. Lossless compression techniques remove redundant information from the data in a manner that does not compromise the integrity of the data, thereby allowing for bit-accurate reconstruction of the original data from the compressed data.
Some lossless compression systems replace fixed-length words with shorter variable-length codes when compressing data files. In such systems, shorter codes can be assigned to words that are used more frequently, and longer codes can be assigned to words that appear less frequently. For example, some lossless compression systems use Huffman coding, context-adaptive variable length coding (CAVLC), or context-adaptive binary arithmetic coding (CABAC) to compress data files. Lossless compression typically produces a dense bit stream of variable-length compressed data words. Because maximal compression is the primary goal, designers have given little consideration to the processing required to decompress the data. Thus, existing systems are forced to decompress data serially, which is time-consuming.
Hence, what is needed is a method for compressing and decompressing data without the above-described problem.